#!/usr/bin/env python

import setuptools
from distutils.core import setup
from distutils.extension import Extension
from Cython.Distutils import build_ext

import os
import sys
import numpy
import platform

cil_version=os.environ['CIL_VERSION']
if  cil_version == '':
    print("Please set the environmental variable CIL_VERSION")
    sys.exit(1)

library_include_path = ""
library_lib_path = ""
try:
    library_include_path = os.environ['LIBRARY_INC']
    library_lib_path = os.environ['LIBRARY_LIB']
except:
    library_include_path = os.environ['PREFIX']+'/include'
    pass

extra_include_dirs = [numpy.get_include(), library_include_path]
#extra_library_dirs = [os.path.join(library_include_path, "..", "lib")]
extra_compile_args = []
extra_library_dirs = [library_lib_path]
extra_compile_args = []
if platform.system() == 'Darwin':
  extra_link_args = ['-rpath','@CMAKE_INSTALL_PREFIX@/lib']
else:
  extra_link_args = []
extra_libraries = ['cilreg']

print ("extra_library_dirs " , extra_library_dirs)

extra_include_dirs += [os.path.join(".." , "Core"),
                       os.path.join(".." , "Core",  "regularisers_CPU"),
                       os.path.join(".." , "Core",  "inpainters_CPU"),
                       os.path.join(".." , "Core",  "regularisers_GPU" , "TV_FGP" ) ,
                       os.path.join(".." , "Core",  "regularisers_GPU" , "TV_ROF" ) ,
                       os.path.join(".." , "Core",  "regularisers_GPU" , "TV_PD" ) ,
                       os.path.join(".." , "Core",  "regularisers_GPU" , "TV_SB" ) ,
                       os.path.join(".." , "Core",  "regularisers_GPU" , "TGV" ) ,
                       os.path.join(".." , "Core",  "regularisers_GPU" , "LLTROF" ) ,
                       os.path.join(".." , "Core",  "regularisers_GPU" , "NDF" ) ,
                       os.path.join(".." , "Core",  "regularisers_GPU" , "dTV_FGP" ) ,
                       os.path.join(".." , "Core",  "regularisers_GPU" , "Diff4th" ) ,
                       os.path.join(".." , "Core",  "regularisers_GPU" , "PatchSelect" ) ,
						   "."]

if platform.system() == 'Windows':
    extra_compile_args[0:] = ['/DWIN32','/EHsc','/DBOOST_ALL_NO_LIB' , '/openmp' ]
elif platform.system() == 'Darwin':
    extra_compile_args = ['-O2', '-funsigned-char', '-Wall', '-rpath']
else:
    extra_compile_args = ['-fopenmp','-O2', '-funsigned-char', '-Wall', '-std=c++0x']
    extra_libraries += [@EXTRA_OMP_LIB@]

setup(
  name='ccpi',
	description='CCPi Core Imaging Library - Image regularisers',
	version=cil_version,
  cmdclass = {'build_ext': build_ext},
  ext_modules = [Extension("ccpi.filters.cpu_regularisers",
    sources=[os.path.join("." , "src", "cpu_regularisers.pyx" ) ],
    include_dirs=extra_include_dirs,
    library_dirs=extra_library_dirs,
    extra_compile_args=extra_compile_args,
    libraries=extra_libraries,
    extra_link_args=extra_link_args
    ),
  ],
	zip_safe = False,
	packages = {'ccpi', 'ccpi.filters', 'ccpi.supp'},
)


@SETUP_GPU_WRAPPERS@
